﻿<?php 
	error_reporting(0);
	session_start();											//session_start wywala warningi !
	if (!isset($_SESSION['nowa'])) {
		session_regenerate_id();
		$_SESSION['block'] = false;
		$_SESSION['nowa'] = true;
		$_SESSION['adresuzytkownika'] = $_SERVER['REMOTE_ADDR'];
	}

	if($_SESSION['adresuzytkownika'] != $_SERVER['REMOTE_ADDR']) {
		session_destroy();
		//header("Location: logowanie.php");
		echo "<script language=\"javascript\">location.href='logowanie.php';</script>"; 
		exit;
	}
	
	if(!isset($_SESSION['zalogowany']) || !$_SESSION['zalogowany']) {
		//header("Location: logowanie.php");
		echo "<script language=\"javascript\">location.href='logowanie.php';</script>";
		exit;
	}
	
	if(isset($_SESSION['nazwaUz'])) {
		$usrname = $_SESSION['nazwaUz'];
	}
	else {
		$usrname = 'noname';
	}
?>
<html>
<head>
<title>Zapisy</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />


<script type="text/javascript">
//-----------------------------------------------------------------------------------------------------------
//----------ZMIENNE-GLOBALNE---------------------------------------------------------------------------------

var dirChosen;		//aktualnie wybrany kierunek
var specChosen;		//aktualnie wybrana specjalizacja
var stepChosen;		//aktualnie wybrany stopien
var subjChosen;		//aktualnie wybrany przedmiot
var lectChosen;		//aktualnie wybrany wyklad
var labChosen;		//aktualnie wybrane cwiczenia
var grChosen;            //aktualnie wybrana grupa
					//jesli == null to nie wybrano

									//lista przedmiotow - <div id="subjs" ... >
var subjListLength = 14;			//liczba pozycji w liscie przedmiotow
var subjFirst = 0;					//numer pierwszego przedmiotu na liscie przedmiotow
var subjLast = subjListLength-1;	//numer ostatniego przedmiotu na liscie przedmiotow
									//nie mylic numeru na liscie z id przedmiotu z bazy
									//id z bazy jest wykorzystywane w id znacznika <span> przedmiotu

							
var plan = new Array();
     /*	plan[1] = new Array();   //8:15
			plan[1][1] = new Array(); //pon
                              plan[1][1][0] = new Array(); //pierwszy wybór przedmiotu
                                     plan[1][1][0]['gr'] = new Array(); // id grupy zajęciowej (może być to wykład lub ćwiczenia)
                                     plan[1][1][0]['subj'] = new Array(); // id przedmiotu
                                     plan[1][1][0]['wyk_cw'] = new Array(); // czy jest to wykład czy ćwiczenia(1-wykład, 0 - cwiczenia)
                              plan[1][1][1] = new Array(); //drugi wybór przedmiotu (z konfliktem)
                                     plan[1][1][1]['gr'] = new Array();
                                     plan[1][1][1]['subj'] = new Array();
                                     plan[1][1][1]['wyk_cw'] = new Array();
			plan[1][2] = new Array(); //wto
			plan[1][3] = new Array(); //sro
			plan[1][4] = new Array(); //czw
			plan[1][5] = new Array(); //pia
   	plan[2] = new Array();//10:00
     */
//---------------------------------------------------------------------------------------------------------
//----------FUNKCJE----------------------------------------------------------------------------------------
//funkcja tworząca golbalną tablicę plan
function createArrayPlan(){
    for(hour=1; hour<=6; hour++){
        plan[hour] = new Array();
        for(day=1; day<=5; day++){
            plan[hour][day] = new Array();
            for(position=0; position<=1; position++){
                plan[hour][day][position] = new Array();
                plan[hour][day][position]['gr'] = new Array();
                plan[hour][day][position]['subj'] = new Array();
                plan[hour][day][position]['wyk_cw'] = new Array();
            }
        }
    }
}
//funkcja zapisująca plan uzytkownika do bazy danych
function savePlan() {
	xmlhttp = getXmlHttpObject();
	var groupsIds = new Array();
	var groupsCount = 0;
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			alert(xmlhttp.responseText);
		}
	}
	for(hour=1; hour<=6; hour++) {
		for(day=1; day<=5; day++) {
			for(position=0; position<=1; position++) { 
				if(plan[hour][day][position]['gr'][0] != null) {
					groupsIds[groupsCount] = plan[hour][day][position]['gr'];
					groupsCount++;
					//alert(groupsIds[groupsCount]);
					xmlhttp.open('GET','savePlan.php?grId='+plan[hour][day][position]['gr'],false);
					xmlhttp.send();
				}
	
	        }
        }
    }
	
	//alert(groupsIds);
	window.open('planRaport.php','Plan Zajęć','width=1050,height=700,scrollbars=yes'); 
	//xmlhttp.open('GET','savePlan.php?grId='+dirChosen,true);
	//mlhttp.send();
}
//funkcja pomocnicza, zwraca objekt ajaxowy
function getXmlHttpObject() {
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else {// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlhttp;
}
//funkcja getKierunki:
//pobiera kierunki z bazy poprzez plik getKierunki.php i wrzuca ich nazwy 
//do <div id="dirs" ... > jako elementy <span id="dir_kierunekid" onclick="getSpecjalizacje(kierunekid)" ...
//gdzie kierunekid to id przedmiotu w bazie
//np. <span id="dir_1" onclick="getSpecjalizacje(1)">Matematyka</span>
//--
//poza tym wrzuca id przedmiotu do zmiennej globalnej dirChosen
//--------
//funkcje getStopnie, getSpecjalizacje, getPrzedmioty, getWyklady itd dzialaja analogicznie
//--------
//wywolywana po otwarciu strony (w bodyInit)
function getKierunki() {
	xmlhttp = getXmlHttpObject();
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			document.getElementById('dirs').innerHTML += xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET','getKierunki.php',true);
	xmlhttp.send();
}
//wywolywana po kliknieciu na kierunek w filtrze
function getStopnie(kierunekId) {
	xmlhttp = getXmlHttpObject();
	
	//odznacz wybrany kierunek
	if (dirChosen != null) {
		str = 'dir_'+dirChosen;
		document.getElementById( str ).setAttribute("class", "");
	}	
	//zaznacz nowowybrany kierunek
	dirChosen = kierunekId;
	str = 'dir_'+kierunekId;
	document.getElementById( str ).setAttribute("class", "chosen");
	
	//wyczysc specjalizacje i przedmioty na stronie
	specChosen = null;
	subjChosen = null;
	lectChosen = null;
	labChosen = null;
	stepChosen = null;
	
	document.getElementById('subjs').innerHTML = "";
	document.getElementById('specs').innerHTML = "";
	document.getElementById('lects').innerHTML = "";
	document.getElementById('labs').innerHTML = "";
	document.getElementById('steps').innerHTML = "";
	
	subjFirst = 0;
	subjLast = subjListLength-1;
	
	document.getElementById('steps').innerHTML += '<span id="step_1" onclick="getSpecjalizacje('+kierunekId+',1)">Stopień 1</span>';
	document.getElementById('steps').innerHTML += '<span id="step_2" onclick="getSpecjalizacje('+kierunekId+',2)">Stopień 2</span>';
}
//wywolywana po kliknieciu na stopien
function getSpecjalizacje(kierunekId,stopienId) {
	xmlhttp = getXmlHttpObject();
	
	//odznacz wybrany kierunek
	if (dirChosen != null) {
		str = 'dir_'+dirChosen;
		document.getElementById( str ).setAttribute("class", "");
	}	
	//zaznacz nowowybrany kierunek
	dirChosen = kierunekId;
	str = 'dir_'+kierunekId;
	document.getElementById( str ).setAttribute("class", "chosen");
	
	//odznacz wybrany stopien
	if (stepChosen != null) {
		str = 'step_'+stepChosen;
		document.getElementById( str ).setAttribute("class", "");
	}	
	//zaznacz nowowybrany stopien
	stepChosen = stopienId;
	str = 'step_'+stopienId;
	document.getElementById( str ).setAttribute("class", "chosen");
	
	//wyczysc specjalizacje i przedmioty na stronie
	specChosen = null;
	subjChosen = null;
	lectChosen = null;
	labChosen = null;
	document.getElementById('subjs').innerHTML = "";
	document.getElementById('specs').innerHTML = "";
	document.getElementById('lects').innerHTML = "";
	document.getElementById('labs').innerHTML = "";
	
	subjFirst = 0;
	subjLast = subjListLength-1;
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			document.getElementById('specs').innerHTML += xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET','getSpecjalizacje.php?dirChosen='+dirChosen,true);
	xmlhttp.send();
}

//przycina liste przedmiotow po pobraniu z bazy
//tzn elementy przedmiotow <span> o numerze na liscie wiekszym od subjLast dostaja klase span.hide
//w kodzie elementy <span> sa nadal obecne ale nie wyswietlane
function cutSubjList() {
	var subjDiv = document.getElementById('subjs');
	var subjSpanList = subjDiv.getElementsByTagName('span');
	var i;
	
	for (i = subjLast+1; i < subjSpanList.length; i++) {
		subjSpanList[i].setAttribute("class", "hide");
	}
	
}
//przesuwa liste przedmiotow o x 
//wywolywane z parametrem 1 lub -1 po kliknieciu na trojkaty (gora dol)
//jesli klikamy trojkat "do gory" to ukrywamy ostatni wyswietlany element i pokazujemy pierwszy-1
//jesli klikamy trojkat "w dol" to ukrywamy pierwszy wyswietlany element i pokazujemy ostatni+1
//pozostale elementy zostaja bez zmian
//ukrywanie elementow polega na doklejeniu " hide" do ich atrybutu class 
//pokazywanie elementow polega na wycieciu "hide" z ich atrybutu class 
//w ten sposob po przewinieciu listy i ukryciu zaznaczonego elementu, jesli pokazemy ten element 
//to bedzie on nadal zaznaczony
function scrollSubjList(x) { 
	var subjDiv = document.getElementById('subjs');
	var subjSpanList = subjDiv.getElementsByTagName('span');
	var currentClass;

	if (x < 0) {
		if(subjFirst == 0) return;
		currentClass = subjSpanList[subjLast].getAttribute("class");
		subjSpanList[subjLast].setAttribute("class", currentClass+" hide");
		subjFirst += x;
		subjLast += x;
		currentClass = subjSpanList[subjFirst].getAttribute("class");
		subjSpanList[subjFirst].setAttribute("class", currentClass.replace("hide",""));
	}
	else {
		if(subjLast >= subjSpanList.length-1) return;
		currentClass = subjSpanList[subjFirst].getAttribute("class");
		subjSpanList[subjFirst].setAttribute("class", currentClass+" hide");
		subjFirst += x;
		subjLast += x;
		currentClass = subjSpanList[subjLast].getAttribute("class");
		subjSpanList[subjLast].setAttribute("class", currentClass.replace("hide",""));	
	}

}
//wywolywana po kliknieciu na specjalizacje
function getPrzedmioty(specializacjaId) {
	xmlhttp = getXmlHttpObject();
	
	//odznacz wybrana specjalizacje
	if (specChosen != null) {
		str = 'spec_'+specChosen;
		document.getElementById( str ).setAttribute("class", "");
	}
	//zaznacz nowowybrana specjalizacje
	specChosen = specializacjaId;
	str = 'spec_'+specializacjaId;
	document.getElementById( str ).setAttribute("class", "chosen");	
	
	//wyczysc przedmioty na stronie
	subjChosen = null;
	lectChosen = null;
	labChosen = null;
	document.getElementById('subjs').innerHTML = "";
	document.getElementById('lects').innerHTML = "";
	document.getElementById('labs').innerHTML = "";
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			document.getElementById('subjs').innerHTML += xmlhttp.responseText;
			cutSubjList();
		}
	}
	xmlhttp.open('GET','getPrzedmioty.php?specChosen='+specChosen,true);
	xmlhttp.send();
	
}
//wywolywana po kliknieciu na przedmiot
function getWyklady(przedmiotId) {
	
	xmlhttp = getXmlHttpObject();
	var currentClass;
	//odznacz wybrany przedmiot
	if (subjChosen != null) {
		str = 'subj_'+subjChosen;
		currentClass = document.getElementById( str ).getAttribute("class");
		document.getElementById( str ).setAttribute("class", currentClass.replace("chosen",""));
	}
	
	//zaznacz nowowybrany przedmiot
	subjChosen = przedmiotId;
	str = 'subj_'+przedmiotId;
	currentClass = document.getElementById( str ).getAttribute("class");
	document.getElementById( str ).setAttribute("class", currentClass+" chosen");	
	
	//wyczysc grupy na stronie
	lectChosen = null;
	labChosen = null;
	
	document.getElementById('lects').innerHTML = "";
	document.getElementById('labs').innerHTML = "";
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			document.getElementById('lects').innerHTML += xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET','getWyklady.php?subjChosen='+subjChosen,true);
	xmlhttp.send();
}
//wywolywana po kliknieciu na wyklad
function getCwiczenia(wykladId) {
	xmlhttp = getXmlHttpObject();
	var currentClass;
	//odznacz wybrany przedmiot
	if (lectChosen != null) {
		str = 'lect_'+lectChosen;
		currentClass = document.getElementById( str ).getAttribute("class");
		document.getElementById( str ).setAttribute("class", currentClass.replace("chosen",""));
	}
	
	//zaznacz nowowybrany przedmiot
	lectChosen = wykladId;
	str = 'lect_'+wykladId;
	currentClass = document.getElementById( str ).getAttribute("class");
	document.getElementById( str ).setAttribute("class", currentClass+" chosen");	
	
	//wyczysc cwiczenia na stronie
	labChosen = null;
	
	document.getElementById('labs').innerHTML = "";
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			document.getElementById('labs').innerHTML += xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET','getCwiczenia.php?lectChosen='+lectChosen,true);
	xmlhttp.send();
	
}
//wywolywane po kliknieciu na cwiczenia
//zaznacza wybrane cwiczenia i nic wiecej
function selectCwiczenia(cwiczeniaId) {
	//xmlhttp = getXmlHttpObject();
	var currentClass;
	//odznacz wybrany przedmiot
	if (labChosen != null) {
		str = 'lab_'+labChosen;
		currentClass = document.getElementById( str ).getAttribute("class");
		document.getElementById( str ).setAttribute("class", currentClass.replace("chosen",""));
	}
	
	//zaznacz nowowybrany przedmiot
	labChosen = cwiczeniaId;
	str = 'lab_'+cwiczeniaId;
	currentClass = document.getElementById( str ).getAttribute("class");
	document.getElementById( str ).setAttribute("class", currentClass+" chosen");
        //przechowanie id wybranej gr zajeciowej w zmienej $_GET
      //  $_GET['labChosen']=labChosen;

}
//pobiera string z godzina rozpoczecia zajec 
//zwraca pozycje godziny na planie zajec
function timeToPosY(time) {
	switch(time) {
		case '08:15':
			return 1;
		case '10:00':
			return 2;
		case '11:45':
			return 3;
		case '13:45':
			return 4;
		case '15:30':
			return 5;
		case '17:15':
			return 6;
		default:
			return -1;
	}
}

//funkcja sprawdza, czy dany element o podanym id zajduje się już na planie
function searchInPlan(element){
    for (index_hour in plan){
        for(index_day in plan[index_hour]){
            if(plan[index_hour][index_day][0]['gr'] == element || plan[index_hour][index_day][1]['gr'] == element){
              return true;
            }
        }
    }
    return false;
}

function searchSubjectInPlan(element){
   // alert('elem'+element);
    for (index_hour in plan){
        for(index_day in plan[index_hour]){
            if(plan[index_hour][index_day][0]['subj'] == element || plan[index_hour][index_day][1]['subj'] == element){
              return true;
            }
        }
    }
    return false;
}
//funkcja zwraca pozycje na planie (godz i dzień tygodnia) na podstawie id
function getPositionInPlan(chosen_element){
    for (index_hour in plan){
        for(index_day in plan[index_hour]){
            if(plan[index_hour][index_day][0]['gr'] == chosen_element){
                result = new Object();
                result['number'] = 0;
                result['day'] = index_day;
                result['hour'] = index_hour;
                result['subj'] = plan[index_hour][index_day][0]['subj'];
                return result;
            }else if(plan[index_hour][index_day][1]['gr'] == chosen_element){
                result = new Object();
                result['number'] = 1;
                result['day'] = index_day;
                result['hour'] = index_hour;
                result['subj'] = plan[index_hour][index_day][1]['subj'];
                return result;
            }
        }
    }
    return false;
}

//funkcja umieszcza na planie i globalnej tablicy planu wybrana grupę zajęciową
//pozwala na umieszczenie na planie konfliktu (ale nie więcej niż dwa zajęcia w tym samym czasie)
function getGrZajeciowa(grChosen) {
	xmlhttp = getXmlHttpObject();

	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    gr_zajeciowa = xmlhttp.responseXML.documentElement;
                    dzien_num = gr_zajeciowa.getElementsByTagName("dzien").item(0).firstChild.data;
                    godz_rozp_num = timeToPosY(gr_zajeciowa.getElementsByTagName("godz_rozp").item(0).firstChild.data);
                    zajecia = gr_zajeciowa.getElementsByTagName("nazwa_przedmiotu_skrot").item(0).firstChild.data;
                    zajecia += gr_zajeciowa.getElementsByTagName("nazwa").item(0).firstChild.data;

                     if(plan[godz_rozp_num][dzien_num][0]['gr'] == "" || plan[godz_rozp_num][dzien_num][0]['gr'] == null ){
                        //wyświetlenie zajęć na planie
                         document.getElementById('td'+dzien_num+godz_rozp_num).innerHTML += '<span class="gr" id="gr_'+grChosen+'" onclick="selectElement('+grChosen+')">'+zajecia+'</span>';
                         //dodanie zajęć (id zajec) do globalnej tablicy zawierającej układany przez studenta plan
                         plan[godz_rozp_num][dzien_num][0]['gr']= grChosen;
                         plan[godz_rozp_num][dzien_num][0]['subj']= subjChosen;
                    }else if(plan[godz_rozp_num][dzien_num][1]['gr'] == "undefined" || plan[godz_rozp_num][dzien_num][1]['gr'] == null){
                        alert('Konflikt! W tym czasie masz już inne zajęcia!');
                        plan[godz_rozp_num][dzien_num][1]['gr']= grChosen;
                        plan[godz_rozp_num][dzien_num][1]['subj']= subjChosen;
                        document.getElementById('td'+dzien_num+godz_rozp_num).innerHTML += '<span class="gr" id="gr_'+grChosen+'" onclick="selectElement('+grChosen+')">'+zajecia+'</span>';
                    }else{
                        alert('Kolejny konflikt! Nie można dodać kolejnego przedmiotu!');
                    }
            }
	}
       	xmlhttp.open('GET','getGrZajeciowa.php?grChosen='+grChosen,true);
	xmlhttp.send();

}
//funkcja umieszcza na planie i globalnej tablicy planu wybrana grupę zajęciową ćwiczeń wraz z wykładem
//pozwala na umieszczenie na planie konfliktu (ale nie więcej niż dwa zajęcia w tym samym czasie)
function getGrZajeciowaWithConnection(gr) {
	xmlhttp = getXmlHttpObject();

	xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
             gr_zajeciowa = xmlhttp.responseXML.documentElement;
             array_length = document.documentElement.childNodes.length;
             for(var i=0; i< array_length; i++){

                    id_num = gr_zajeciowa.getElementsByTagName("id_gr").item(i).firstChild.data;
                    dzien_num = gr_zajeciowa.getElementsByTagName("dzien").item(i).firstChild.data;
                    godz_rozp_num = timeToPosY(gr_zajeciowa.getElementsByTagName("godz_rozp").item(i).firstChild.data);
                    zajecia = gr_zajeciowa.getElementsByTagName("nazwa_przedmiotu_skrot").item(i).firstChild.data;
                    zajecia += gr_zajeciowa.getElementsByTagName("nazwa").item(i).firstChild.data;

                     if(plan[godz_rozp_num][dzien_num][0]['gr'] == "" || plan[godz_rozp_num][dzien_num][0]['gr'] == null ){
                        //wyświetlenie zajęć na planie
                         document.getElementById('td'+dzien_num+godz_rozp_num).innerHTML += '<span class="gr" id="gr_'+id_num+'" onclick="selectElement('+id_num+')">'+zajecia+'</span>';
                         //dodanie zajęć (id zajec) do globalnej tablicy zawierającej układany przez studenta plan
                         plan[godz_rozp_num][dzien_num][0]['gr']= id_num;
                         plan[godz_rozp_num][dzien_num][0]['subj']= subjChosen;
                    }else if(plan[godz_rozp_num][dzien_num][1]['gr'] == "" || plan[godz_rozp_num][dzien_num][1]['gr'] == null){
                       // alert('Konflikt! W tym czasie masz już inne zajęcia!');
                        plan[godz_rozp_num][dzien_num][1]['gr']= id_num;
                        plan[godz_rozp_num][dzien_num][1]['subj']= subjChosen;
                        document.getElementById('td'+dzien_num+godz_rozp_num).innerHTML += '<span class="gr" id="gr_'+id_num+'" onclick="selectElement('+id_num+')">'+zajecia+'</span>';
                    }else{
                        alert('Kolejny konflikt! Nie można dodać kolejnego przedmiotu!');
                    }
                    }
            }
	}
       	xmlhttp.open('GET','getGrZajeciowaWithConnection.php?grChosen='+gr,true);
	xmlhttp.send();


}

//wywolywana po kliknieciu na przycisk dodaj przedmiot do planu
//wyświetla na planie symbol przedmiotu i numer gr zajeciowej
function addToPlan() {
    var lect, lab, subj;
     //jeśli zajęcia mają zarówno ćwiczenia jak i wykład
     if((labChosen != null) && (lectChosen != null) ) {
        //sprawdzenie, czy wykład jest już na planie
        lect = searchInPlan(lectChosen);
        if(lect == false){
           // alert('nie ma takiego wykładu w planie');
            //sprawdzenie czy student zapisał sie juz na przedmiot
            //jeśli tak, to usuwam z planu poprzednio dodany wykład i ćwiczenia
            subj = searchSubjectInPlan(subjChosen);
            if(subj == true){
             //   alert('jest taki przedmiot');
                deleteSubjFromPlan(subjChosen); //usunęcie ćwiczeń i wykładu dla przedmiotu o id = subjChosen
                getGrZajeciowaWithConnection(labChosen);
            }else{
             //   alert('nie ma takiego przedmiotu');
                getGrZajeciowaWithConnection(labChosen);
            }
        }else{
         //  alert('jest taki wykładu w planie');
           lab = searchInPlan(labChosen);
           if(lab == false){//jeśli na planie  jest już wykład, a student dodaje inną niż poprzednio grupę ćwiczeniową
               //zdjęcie z planu poprzednio wybranych ćwiczeń na rzecz nowo wybranych (na podstawie id wykładu powiązanego z ćwiczeniami do usunięcia)
                 deleteSubjFromPlan(subjChosen);
                 getGrZajeciowaWithConnection(labChosen);
           }else{
             //  alert('Zmiana gr ćwiczeniowej i wykładowej');
                deleteSubjFromPlan(subjChosen); //usunęcie ćwiczeń i wykładu dla przedmiotu o id = subjChosen
                getGrZajeciowaWithConnection(labChosen);
           }
       }
     }

}

//funkcja sprawdza czy zajecia o id = id to ćwiczenia
function isLab(id){
        xmlhttp = getXmlHttpObject();
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                        gr_zajeciowa = xmlhttp.responseXML.documentElement;
                        //dla wykladu wyk_cw = 1 ; dla ćwiczeń wyk_cw = 0
                        wyk_cw = gr_zajeciowa.getElementsByTagName("wyk_cw").item(0).childNodes[0].nodeValue;

                        //nie działa
                        if(wyk_cw == "0"){
                            return true;
                        }else if(wyk_cw == "1"){
                             return flase;
                        }
                }
        }
        xmlhttp.open('GET','getGrZajeciowa.php?grChosen='+id,true);
	xmlhttp.send();



}
//funkcja usuwa wszystkie informacje o podanym elemencie z tablicy globalnej planu
//(na podstawie id ćwiczeń, wykładu bądż przedmiotu)
function cleanCellInPlanArray(subj_id,lect_id,lab_id){
var element; // subj_id,lect_id lublab_id
var element_type; //'subj','gr'  - indeksy w globalnej
   if(subj_id != null){
            element = subj_id;
            element_type = 'subj';
   }else if(lect_id != null){
            element = lect_id;
            element_type = 'gr';
   }else if(lab_id != null){
            element = lab_id;
            element_type = 'gr';
   }

       for (index_hour in plan){
        for(index_day in plan[index_hour]){
            if(plan[index_hour][index_day][0][element_type] == element){
                for(index_type in plan[index_hour][index_day][0]){
                  plan[index_hour][index_day][0][index_type] = null;
                }              
            }else if(plan[index_hour][index_day][1][element_type] == element){
                for(index_type in plan[index_hour][index_day][0]){
                  plan[index_hour][index_day][1][index_type] = null;
                }
            }
        }
        }
}
//funkcja usuwa z planu wykład i cwiczenia dla przedmiotu o id = subjChosen
function deleteSubjFromPlan(subj){
    var index_hour, index_day;
    for (index_hour in plan){
        for(index_day in plan[index_hour]){
            //alert ('day'+index_day);
            if(plan[index_hour][index_day][0]['subj'] == subj){
                //usunęcie przedmiotu z planu
                 var zajecia_id = plan[index_hour][index_day][0]['gr'];
                 //alert ('zajecia_id'+zajecia_id);
                 var td = document.getElementById('td'+index_day+index_hour);
                 var td_child = document.getElementById('gr_'+zajecia_id);
                 td.removeChild(td_child);

            }else if(plan[index_hour][index_day][1]['subj'] == subj){
                 //usunęcie przedmiotu z planu
                 var zajecia_id = plan[index_hour][index_day][1]['gr'];
                 var td = document.getElementById('td'+index_day+index_hour);
                 var td_child = document.getElementById('gr_'+zajecia_id);
                 td.removeChild(td_child);
            }
        }
    }
  //usunecie przedmiotu z globalnej tablicy
   cleanCellInPlanArray(subj,null,null);
}
//funkcja usuwa z planu wykład powiązany z ćwiczeniami o id = element;
function deleteLectFromPlan(element){
        xmlhttp = getXmlHttpObject();

	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    labs = xmlhttp.responseXML.documentElement;
                    array_length = document.documentElement.childNodes.length;
                    for(var i=0; i<= array_length; i++){
                        dzien_num = labs.getElementsByTagName("dzien").item(i).firstChild.data;
                        godz_rozp_num = timeToPosY(labs.getElementsByTagName("godz_rozp").item(i).firstChild.data);
                        zajecia_id = labs.getElementsByTagName("id").item(i).childNodes[0].nodeValue;
                        //sprawdzenie ,czy ćwiczenia o danym id są na planie
                         if(plan[godz_rozp_num][dzien_num][0]['gr'] == zajecia_id){
                            //usunięcie ćwiczeń z planu
                            td = document.getElementById('td'+dzien_num+godz_rozp_num);
                            td_child = document.getElementById('gr_'+zajecia_id);
                            td.removeChild(td_child);
                            cleanCellInPlanArray(null,zajecia_id,null);
                            break;
                         }else if(plan[godz_rozp_num][dzien_num][1] == zajecia_id){
                            td = document.getElementById('td'+dzien_num+godz_rozp_num);
                            td_child = document.getElementById('gr_'+zajecia_id);
                            td.removeChild(td_child);
                            cleanCellInPlanArray(null,zajecia_id,null);
                            break;
                         }

                    }

		}
	}
       	xmlhttp.open('GET','GetWykladForCwiczenia.php?element='+element,true);
	xmlhttp.send();

}

//funkcja usuwa z planu ćwiczenia powiązane z wykładem o id = element;
function deleteLabFromPlan(element){
        xmlhttp = getXmlHttpObject();

	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    labs = xmlhttp.responseXML.documentElement;

                   array_length = document.documentElement.childNodes.length;
                    //jeśli nie ma żadnych powiązanych ćwiczeń, to usuń powiązany wykład
                  //  if(array_length == 0){
                   //     deleteLectFromPlan(element);
                   // }else{
                    for(var i=0; i< array_length; i++){
                        dzien_num = labs.getElementsByTagName("dzien").item(i).firstChild.data;
                        godz_rozp_num = timeToPosY(labs.getElementsByTagName("godz_rozp").item(i).firstChild.data);
                        zajecia_id = labs.getElementsByTagName("id").item(i).childNodes[0].nodeValue;
                      
                        //sprawdzenie ,czy ćwiczenia o danym id są na planie
                         if(plan[godz_rozp_num][dzien_num][0]['gr'] == zajecia_id){
                             //usunięcie ćwiczeń z planu
                            td = document.getElementById('td'+dzien_num+godz_rozp_num);
                            td_child = document.getElementById('gr_'+zajecia_id);
                            td.removeChild(td_child);
                            cleanCellInPlanArray(null,null,zajecia_id);
                            break;                                         
                         }else if(plan[godz_rozp_num][dzien_num][1]['gr'] == zajecia_id){
                            td = document.getElementById('td'+dzien_num+godz_rozp_num);
                            td_child = document.getElementById('gr_'+zajecia_id);
                            td.removeChild(td_child);
                            cleanCellInPlanArray(null,null,zajecia_id);
                            break;
                         }
                         
                 //   }

		}}
	}
       	xmlhttp.open('GET','getCwiczeniaForWyklad.php?element='+element,true);
	xmlhttp.send();

}



//usuwanie z planu zanaczonego elementu (którego id znajduje się w zmiennej globalnej grChosen)
function removeFromPlan(){
              //odczytanie pozycji przedmiotu do usunęcia z planu
              position = getPositionInPlan(grChosen);
              if(position){
                   deleteSubjFromPlan(position['subj']);                    
                   grChosen = null;
             }
                                 	
}
function clean(){
    for (var i = 0; i<10; i++){
     var j=i;   
    }
}
//ogólny select dotyczący zaznaczania czegokolwiek (zwraca jedynie info o id zaznaczonego elementu)
function selectElement(elementId){

	var currentClass;
	//odznacz wybrany przedmiot
	if (grChosen != null) {
		str = 'gr_'+grChosen;
		currentClass = document.getElementById( str ).getAttribute("class");
		document.getElementById( str ).setAttribute("class", currentClass.replace("chosen",""));
	}

	//zaznacz nowowybrany przedmiot
	grChosen = elementId;
	str = 'gr_'+elementId;
	currentClass = document.getElementById( str ).getAttribute("class");
	document.getElementById( str ).setAttribute("class", currentClass+" chosen");

}
/*function savePlan() {
xmlhttp = getXmlHttpObject();
var groupsIds = new Array();
var groupsCount = 0;

alert('savePlan()');

for(hour=1; hour<=6; hour++) {
　for(day=1; day<=5; day++) {
　 for(position=0; position<=1; position++) {
　　if(plan[hour][day][position]['gr'] != null) {
　　 groupsIds[groupsCount] = plan[hour][day][position]['gr'];
　　 groupsCount++;
　　 //alert(' ');

　　}

　
　　}}}

alert(groupsIds);
//xmlhttp.open('GET','savePlan.php?grId='+dirChosen,true);
//mlhttp.send();
}*/

//wywoływane w bodyInit, wyświetla kierunki w filtrze i wszystkie przedmioty
function getKierunkiAndPrzedmiotyAll() {
	xmlhttp = getXmlHttpObject();
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
			var responseString = xmlhttp.responseText;  
            var responseArray = responseString.split('_!_unique_delimiter_!_');
		
			document.getElementById('dirs').innerHTML += responseArray[0];
			document.getElementById('subjs').innerHTML += responseArray[1];
			
			cutSubjList();
		}
	}
	xmlhttp.open('GET','getKierunkiAndPrzedmiotyAll.php',true);
	xmlhttp.send();
}

//funkcja wywolywana po otwarciu pliku index.php
function bodyInit() {

    createArrayPlan();
	//getKierunki();
	
	getKierunkiAndPrzedmiotyAll();
	
}



</script>

</head>

<body onload="bodyInit()">
<div id="pagewidth">
	<div id="leftcol">
		<div id="pasek">
		<!--
		Przedmioty pobierane s± z bazy i na tej podstawie generowana jest 
		lista odpowiednich bloków (div) z odpowiadni± klas± kolorów (class).
		Z bazy pobierana jest nazwa przedmiotu oraz prowadz±cy
		-->
			<div class="clear"> <!--bez filtra-->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="clear"> <!--bez filtra-->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="O"> <!--z filtrem - obowiazkowe -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="S"> <!--z filtrem - specjalizacyjne -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="FA"> <!--z filtrem - fakultatywne A -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="FB"> <!--z filtrem - fakultatywne B -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="FB"> <!--z filtrem - fakultatywne B -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="FB"> <!--z filtrem - fakultatywne B -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="H"> <!--z filtrem - fakultatywne H -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="clear"> <!--bez filtra-->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="O"> <!--z filtrem - obowiazkowe -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="S"> <!--z filtrem - specjalizacyjne -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="FA"> <!--z filtrem - fakultatywne A -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="FB"> <!--z filtrem - fakultatywne B -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
			<div class="H"> <!--z filtrem - fakultatywne H -->
				<p class="sub_q">Analiza funkcjonalna funkcjonalna</p>
				<p>prof. dr hab. J.&nbsp;Kaczorowski</p>
			</div>
		</div>
		
		<div id="lewypasek">
			
			<div class="buttonUp" id="ButUp"></div>
			<div class="buttonDown" id="ButDown"></div>
		</div>
		
	</div>
	<div id="rightcol">
	
		<div id="divFilter">
			<!--<div class="title">Wybierz odpowiedni kierunek</div>-->
			<div id="dirs">
				<!--list of directions-->
			</div>
			<div id="steps">
				<!--list of steps-->
			</div>
			<div id="specs">
				<!--list of specialisations-->
			</div>
		</div>
		<div id="menu">
			    <br />
			    <p>
				<a href="#">Powrót</a>
				<a href="#">Profil</a>
				<a href="plan.php">Plan</a>
				<a href="#">FAQ</a>
				<a href="unlog.php">Wyloguj</a>
			    </p>
				<span><?php echo $usrname; ?></span>
		</div>
	
		<div id ="test"> </div>
        
		<div style="width: 1000px; height: auto; float:left; position:relative">
			<div id="divPlan">
				<table id="planTable">                            
				    <tbody>
					<!--plan of lessons-->
					<tr>
					<th style="width:45px;"></th>
					    <th>PN</th>
					    <th>WT</th>
					    <th>SR</th>
					    <th>CZ</th>
					    <th>PT</th>
					</tr>
					<tr>
					    <td class="hour">8.15<br/>9.45</td>
					    <td id="td11"></td>					   
					    <td id="td21"></td>
					    <td id="td31"></td>
					    <td id="td41"></td>
					    <td id="td51"></td>
	
					</tr>
					<tr>
					    <td class="hour">10.00<br/>11.30</td>
					    <td id="td12"></td>
					    <td id="td22"></td>
					    <td id="td32"></td>
					    <td id="td42"></td>
					    <td id="td52"></td>
					</tr>
					<tr>
					    <td class="hour">11.45<br/>13.15</td>
					    <td id="td13"></td>
					    <td id="td23"></td>
					    <td id="td33"></td>
					    <td id="td43"></td>
					    <td id="td53"></td>
					</tr>
					<tr>
					    <td class="hour">13.45<br/>15.15</td>
					    <td id="td14"></td>
					    <td id="td24"></td>
					    <td id="td34"></td>
					    <td id="td44"></td>
					    <td id="td54"></td>
					</tr>
					<tr>
					    <td class="hour">15.30<br/>17.00</td>
					    <td id="td15"></td>
					    <td id="td25"></td>
					    <td id="td35"></td>
					    <td id="td45"></td>
					    <td id="td55"></td>
					</tr>
					<tr>
					    <td class="hour">17.15<br/>18.45</td>
					    <td id="td16"></td>
					    <td id="td26"></td>
					    <td id="td36"></td>
					    <td id="td46"></td>
					    <td id="td56"></td>
					    
					   <!-- <td id="td56"><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span><span class="gr" id="gr_10" onclick="selectElement(10)">DTAU UIF1CA</span></td>-->
					</tr>
				    </tbody>
				</table>
			</div>
		
			<div id="divSubjs">
				<div id="subjs">
					<!--list of subjects-->
				</div>
				<div class="buttonUp" id="subjButUp" onclick="scrollSubjList(-1)"></div>
				<div class="buttonDown" id="subjButDown" onclick="scrollSubjList(1)"></div>
			</div>
		</div>

	
		<div id="divDays">
			<div class="zapiszButtonDown" id="zapiszButDown" onclick="savePlan()"><span class="podpis">zapisz</span></div>
			<div id="days">
				<!--<table id="daysTable">-->
					<!--table of days-->
				<!--</table>-->
			</div>

		</div>
		
		
		<div id="divLabs">
			<div class="buttonUp" id="planButUp" onclick="addToPlan()"><span class="podpis">dodaj</span></div>
			<div class="buttonDown" id="planButDown" onclick="removeFromPlan()"><span class="podpis">usuń</span></div>
			<div id="labs">
				<!--<table id="labsTable">-->
					<!--table of laboratories-->
				<!--</table>-->
			</div>
		</div>
		
		
		<div id="divLects">
			<div id="lects">
				<!--<table id="lectsTable">-->
				<!--table of lectures-->
					<!--</table>-->
			</div>
		</div>

	</div>
</div>


</body>
</html>